function addLoadEvent(func) {

  var oldonload = window.onload;

  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}


function insertAfter(newElement, targetElement) {

  var parent = targetElement.parentNode;

  if (parent.lastChild == targetElement) {
    parent.appendChild(newElement);
  } else {
    parent.insertBefore(newElement, targetElement.nextSibling);
  }
}


function preparePlaceholder() {

  var placeholder = document.createElement("img");
  placeholder.setAttribute("id", "placeholder");
  placeholder.setAttribute("src", "images/placeholder.gif");
  placeholder.setAttribute("alt", "my image gallery");

  var description = document.createElement("p");
  description.setAttribute("id", "description");

  var desctext = document.createTextNode("Choose an image");
  description.appendChild(desctext);

  var gallery = document.getElementById("imagegallery");
  insertAfter(placeholder, gallery);
  insertAfter(description, placeholder);
}


function prepareGallery() {

  var gallery = document.getElementById("imagegallery");
  var links = gallery.getElementsByTagName("a");

  for (var i = 0; i < links.length; i++) {
    links[i].onclick = function() {
      return showPic(this);
    }
    links[i].onkeypress = links[i].onclick;
  }
}


function showPic(whichpic) {

  var source = whichpic.getAttribute("href");
  var text = whichpic.getAttribute("title");
  var placeholder = document.getElementById("placeholder");
  var description = document.getElementById("description");

  placeholder.setAttribute("src", source);
  description.firstChild.nodeValue = text;

  return false;
}

addLoadEvent(preparePlaceholder);
addLoadEvent(prepareGallery);
